A software architecture model used for integrating applications and allowing them to communicate without excessive dependencies on each other.